import java.util.*;

/**
 * @作者: xiaoxun
 * @日期: 2025/3/9 15:22
 * @描述: Map集合
 */
public class Test04 {
	public static void main(String[] args) {
		/**
		 * Map集合称为双列集合，格式：[key1=value1,key2=vlaue2,key3=value3]，一次需要存一对数据作为一个元素。
		 * Map集合的每个元素“key-value”,称为一个键值对，Map集合又叫“键值对集合”
		 * 特点：
		 * 	Map集合有键决定，值是一个附属品，值不做要求。
		 * 		HashMap(由键决定特点)：无序，不重复、无索引（用的多）
		 * 		LinkedHashMap(由键决定特点)：有序、不重复、无索引
		 * 		TreeMap(由键决定特点)：按照大小默认排序、不重复、无索引。
		 * */
		Map<String,Integer> map=new HashMap<>();
		map.put("java入门到跑路",10);
		map.put("华为手表",34);
		map.put("Iphone",31);
		map.put("HUAWEI 60",31);
		System.out.println(map);
//		常用方法
		//1、获取元素个数
		System.out.println(map.size());
		//2、清空集合
//		map.clear();
		//3、判断集合是否为空
		System.out.println(map.isEmpty());
		System.out.println(map);
		//4、更具键取对应的值
		System.out.println(map.get("java入门到跑路"));
		//5、更具键删除数据
		map.remove("Iphone");
		System.out.println(map);
		//6、判断是否包含某个键
		System.out.println(map.containsKey("华为手表"));
		map.keySet();
		System.out.println(map.keySet());
		//遍历map集合
		Map<String,Integer> name=new HashMap<>();
		name.put("张三",24);
		name.put("李四",21);
		name.put("王五",26);
		name.put("赵四",20);
		name.put("季军",28);
		name.put("老王",45);
		Set<String> names = name.keySet();
		for (String name1:names){
			System.out.println(name1);
		}
		//===================================
		Set<Map.Entry<String,Integer>> entries=name.entrySet();
		for (Map.Entry entry:entries){
			System.out.println(entry);
		}
		//==============Lambda=====================
		name.forEach((s, integer) -> System.out.println(s + "==>" + integer));
		/**
		 * Map集合的案例-统计投票人数
		 * 需求：某个班有80名学生，现在需要组织秋游活动，班长提供了四个景点依次是（A、B、C、D），每个学生只能选择一个景点。
		 * 分析：将80个学生选择的数据拿到程序中去。
		 * 	*/
		System.out.println("====================统计投票人数====================");
		String[] locations={"玉龙雪山","伶仃岛","三亚","泰国"};
		List<String> data=new ArrayList<>();
		Random r=new Random();
		for (int i = 0; i < 80; i++) {
			data.add(locations[r.nextInt(locations.length)]);
		}
		System.out.println(data);
		//定义map集合
		Map<String,Integer> local=new HashMap<>();
		for (String datum:data){
//			System.out.println(datum);
			if (local.containsKey(datum)){
				local.put(datum,local.get(datum)+1);
			}else {
				local.put(datum,1);
			}
		}
		local.forEach((s, integer) -> System.out.println(s+"====>"+integer));

		//HashMap
		System.out.println("=====================HashMap=====================");
		Map<Movie,String> movieStringMap=new HashMap<>();
		movieStringMap.put(new Movie("哪吒2魔童闹海","哪吒",41.2),"13:00");
		movieStringMap.put(new Movie("三傻宝莱坞","阿尔密函",41.2),"14:00");
		System.out.println(movieStringMap);
	}

}